<?php
header('Content-Type: application/json; charset=utf-8');

// 引入数据库配置
$dbConfig = include('db_config.php');

// 创建数据库连接
try {
    $dsn = "mysql:host=" . $dbConfig['host'] . ";dbname=" . $dbConfig['dbname'] . ";charset=" . $dbConfig['charset'];
    $pdo = new PDO($dsn, $dbConfig['username'], $dbConfig['password']);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // 检查请求方法是否为 POST
    if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
        throw new Exception('只支持 POST 方法');
    }

    // 获取用户 ID（假设通过身份验证获取，例如从 JWT 或会话中获取）
    $user_id = $_POST['user_id'];
    if (empty($user_id)) {
        throw new Exception('用户 ID 不能为空');
    }

    // 获取文件信息
    $file_title = $_POST['file_title'] ?? '';
    if (empty($file_title)) {
        throw new Exception('文件标题不能为空');
    }

    $file_link = $_POST['file_link'] ?? '';
    if (empty($file_link)) {
        throw new Exception('文件链接不能为空');
    }

    $file_intro = $_POST['file_intro'] ?? ''; // 文件介绍，可选
    $file_cover = $_POST['file_cover'] ?? ''; // 文件封面，可选
    $file_icon = $_POST['file_icon'] ?? ''; // 文件图标，可选
    $file_remark = $_POST['file_remark'] ?? ''; // 文件备注，可选
    $upload_time = date('Y-m-d H:i:s'); // 获取当前时间作为上传时间

    // 插入文件信息到数据库
    $insertFile = "
        INSERT INTO mi_file (
            上传者用户的id,
            文件标题,
            文件介绍,
            文件链接,
            文件封面,
            文件图标,
            文件备注,
            上传时间,
            是否已审核
        ) VALUES (
            :user_id,
            :file_title,
            :file_intro,
            :file_link,
            :file_cover,
            :file_icon,
            :file_remark,
            :upload_time,
            '假'
        )
    ";

    $stmt = $pdo->prepare($insertFile);
    $stmt->bindParam(':user_id', $user_id, PDO::PARAM_STR);
    $stmt->bindParam(':file_title', $file_title, PDO::PARAM_STR);
    $stmt->bindParam(':file_intro', $file_intro, PDO::PARAM_STR);
    $stmt->bindParam(':file_link', $file_link, PDO::PARAM_STR);
    $stmt->bindParam(':file_cover', $file_cover, PDO::PARAM_STR);
    $stmt->bindParam(':file_icon', $file_icon, PDO::PARAM_STR);
    $stmt->bindParam(':file_remark', $file_remark, PDO::PARAM_STR);
    $stmt->bindParam(':upload_time', $upload_time, PDO::PARAM_STR);
    $stmt->execute();

    // 获取插入的文件 ID
    $file_id = $pdo->lastInsertId();

    // 返回成功结果
    $result = [
        'status' => 'success',
        'message' => '文件信息添加成功',
        'data' => [
            'id' => $file_id,
            'file_title' => $file_title,
            'file_link' => $file_link,
            'upload_time' => $upload_time
        ]
    ];
    echo json_encode($result, JSON_UNESCAPED_UNICODE);

} catch (Exception $e) {
    // 捕获异常并返回错误信息
    $errorResult = [
        'status' => 'error',
        'message' => '文件信息添加失败：' . $e->getMessage()
    ];
    echo json_encode($errorResult, JSON_UNESCAPED_UNICODE);
}
?>